package com.study.happystudy.tool;

import org.jetbrains.annotations.NotNull;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;

public class PsyTestHelp {

    public static String getAnalysis(String res){
       if(res == null || "健康".equals(res)){
           return "恭喜你，你没有出现任何心理问题！";
       }
       String analysis = "根据这次测验,发现您可能患有:\""+res+"\"。可能的原因是: ";

        int cnt = 1;
        if(res.contains("轻度")){
            cnt++;
        }
        if(res.contains("中度")){
            cnt++;
        }
        if(res.contains("重度")){
            cnt++;
        }

       if(res.contains("焦虑")){
           ArrayList<String> anxious = new ArrayList<>(List.of("学习压力较大","缺乏休息与放松","过度关注细节"
                   ,"消极的思维模式对未来的负面预期或灾难化思维","完美主义倾向:对自己过高的期望","害怕失败和错误","与同龄人的过度比较"));
           Collections.shuffle(anxious);
           for(String s:anxious){
               analysis += s+"、";
           }
           analysis = analysis.substring(0,analysis.length()-1);

           return analysis;
       }
       if(res.contains("抑郁")){
           ArrayList<String> depressed = new ArrayList<>(List.of("长期暴露在压力下","学业倦怠:学业中长期感到倦怠、无成就感",
                   "缺乏目标或方向","负性思维模式:总是关注生活中的消极事件或对自己进行过度批评","受到低自尊的影响,你经常对自己持负面看法"
           ,"无法确定或接受自己的身份"));
           Collections.shuffle(depressed);
           for(String s:depressed){
               analysis += s+"、";
           }
           analysis = analysis.substring(0,analysis.length()-1);

           return analysis;
       }

       return analysis;
    }

    public static String getAdvice(String res){
        if(res == null || "健康".equals(res)){
            return "真棒！保持好心情，继续保持！良好的良好的心理状态有助于增强幸福感和生活质量。它帮助我们更好地应对生活中的挑战和困难！";
        }

        int cnt = 2;
        if(res.contains("轻度")){
            cnt++;
        }
        if(res.contains("中度")){
            cnt++;
        }
        if(res.contains("重度")){
            cnt++;
        }
        String advice = "";

        if(res.contains("焦虑")) {
            List<String> anxious = getAnxious();
            anxious.subList(0,cnt);
            for(String s:anxious){
                advice += s;
            }
            return advice;
        }
        if(res.contains("抑郁")){
            List<String> depressed = getDepressed();
            depressed.subList(0,cnt);
            for(String s:depressed){
                advice += s;
            }
            return advice;
        }

        return advice;
    }

    @NotNull
    private static List<String> getAnxious() {
        String an1 = "现在，先和我一起做个简单的呼吸练习吧。深深吸气，然后慢慢呼气，想象你把所有的焦虑都呼了出去。多做几次，感觉自己是不是稍微放松了一点？\n";
        String an2 ="学习压力大可能是因为任务太多，一下子让你觉得无从下手。我们可以试着把大的任务分成小部分，每天只完成其中的一小部分。这样，完成任务时，你会更有成就感，压力也会小一些。\n";
        String an3 = "每天结束学习后，花几分钟想一想自己完成了哪些任务，哪怕只是很小的一步，也值得表扬自己。你可以对自己说：“今天我做得不错，虽然有压力，但我还是努力前进了。\n";
        String an4 = "如果你感到焦虑，可以试着放一些轻柔的背景音乐。音乐能帮助你放松，同时也能提高学习的专注度。\n";
        String an5= "动起来吧，哪怕只是简单的散步或慢跑，也能让你感到放松。运动可以促进大脑分泌让人愉悦的化学物质，如内啡肽，这能帮助你更好地应对压力和焦虑。\n";
        String an6 = "如果又可能，就做吧。无论你是想做些什么，还是想做些什么，只要又可能，你就可以做到。不要自我内耗。\n";
        String an7 = "当我们感到压力时，常常会影响到睡眠。但睡眠不足反过来又会加重焦虑。所以，尽量保证每天都有充足的睡眠时间。睡前可以进行一些放松活动，如听轻音乐或阅读有趣的书籍，帮助自己进入睡眠状态。\n";
        List<String> anxious= new ArrayList<>(List.of(an1, an2, an3, an4, an5, an6, an7));
        Collections.shuffle(anxious);
        return anxious;
    }
    private static List<String> getDepressed() {
        String de1 = "抑郁是一种情感状态，不是你的错。允许自己感受这些情绪，而不是试图压抑或忽视它们。承认自己有抑郁的情绪是迈出改善的第一步。\n";
        String de2 = "把你的感受告诉信任的人，比如父母、老师、朋友，或者学校的心理咨询师。他们可能无法完全理解你的感受，但他们可以提供支持和帮助。分享你的情绪往往能减轻内心的负担。\n";
        String de3 = "运动可以帮助你的大脑释放一些化学物质，如多巴胺和内啡肽，这些物质可以提升你的情绪。即使你不喜欢运动，简单的散步、伸展或瑜伽也能有所帮助。\n";
        String de4 = "尽量每天在阳光下活动一段时间，阳光可以帮助调节你的生物钟和提升情绪。\n";
        String de5 = "做一些你曾经喜欢的事情：即使现在你对这些活动失去了兴趣，试着重新参与进去。可能开始时你不会觉得快乐，但随着时间的推移，这些活动可能会再次带给你愉悦感。\n";
        String de6 = "冥想有助于放松心情，减少压力和焦虑感。你可以从简单的冥想开始，比如每天早上或晚上花几分钟时间静坐，闭上眼睛，专注于呼吸。";
        String de7 = "减少自我批评：抑郁时，我们往往会变得对自己过于苛刻。试着用更温柔、更包容的态度对待自己，记住，你正在经历的这一切并不代表你不够好，只是你需要一些时间来恢复。\n";
        List<String> depressed = new ArrayList<>(List.of(de1,de2,de3,de4,de5,de6,de7));
        Collections.shuffle(depressed);
        return depressed;
    }

    public static String getChickenSoup() {
        final String baseUrl = "https://apis.juhe.cn/fapig/soup/query";
        final String apiKey = "7a88a244e7bef3e0cf9484c710bab8bc";

        StringBuilder response = new StringBuilder();
        try {
            // 构建完整的 URL 包含查询参数
            HttpURLConnection connection = getHttpURLConnection(baseUrl, apiKey);

            int responseCode = connection.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) {
                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    response.append(line);
                }
                in.close();

                // 解析 JSON 并提取 text
                JSONObject jsonResponse = new JSONObject(response.toString());
                String text = jsonResponse.getJSONObject("result").getString("text");
                return text;
            } else {
                System.out.println("请求失败，错误码：" + responseCode);
            }
            connection.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    @NotNull
    private static HttpURLConnection getHttpURLConnection(String baseUrl, String apiKey) throws IOException {
        String urlStr = baseUrl + "?key=" + apiKey;
        URL url = new URL(urlStr);

        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setConnectTimeout(5000); // 设置连接超时时间
        connection.setReadTimeout(5000); // 设置读取超时时间

        return connection;
    }
}
